package com.gzc.just.play.last.war.centralserver.character.repository;

import com.gzc.just.play.last.war.centralserver.character.model.Character;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 角色数据访问接口
 */
@Repository
public interface CharacterRepository extends JpaRepository<Character, Long> {
    
    /**
     * 根据用户ID查找所有角色
     */
    List<Character> findByUserId(Long userId);
    
    /**
     * 根据用户ID和角色名查找角色
     */
    Optional<Character> findByUserIdAndCharacterName(Long userId, String characterName);
    
    /**
     * 查找用户的主角色
     */
    Optional<Character> findByUserIdAndIsMainTrue(Long userId);
    
    /**
     * 根据职业查找角色
     */
    List<Character> findByCharacterClass(Integer characterClass);
    
    /**
     * 查找战斗力最高的角色
     */
    @Query(value = "SELECT * FROM characters WHERE user_id = :userId ORDER BY battle_power DESC LIMIT 1", nativeQuery = true)
    Optional<Character> findStrongestCharacter(@Param("userId") Long userId);
    
    /**
     * 查找指定等级范围的角色
     */
    List<Character> findByLevelBetween(Integer minLevel, Integer maxLevel);
}
